﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Clases.Clases;
using AccesoBD;
using Clases.Estructuras;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;


namespace Clases.ClasesPersistentes
{
    class DaoTema
    {

        /*
         * Metodo crear foro 
         * 
         * Parametos pTema
         *
         * Retorna void
         */
        public void crearTema(Tema pTema)
        {
            try
            {
          
                //busco el grupo
                 Grupo grupo = pTema.grupo;
                 int idGrupo = grupo.idGrupo;
              
                List<Parametros> parametros = new List<Parametros>();

                Parametros tmp01 = new Parametros("tema", pTema.tema);
                Parametros tmp02 = new Parametros("calificacion", pTema.calificaion);
                Parametros tmp03 = new Parametros("idGrupo", Convert.ToString(idGrupo));
                Parametros tmp04 = new Parametros("totalAportes", pTema.totalAportes);
                Parametros tmp05 = new Parametros("aportesUsuario", pTema.aportesUsuario);
                Parametros tmp06 = new Parametros("publico",Convert.ToString(pTema.publico));

                string cmdText = "INSERT INTO ttema (nombre_tema,calificacion,id_grupo,max_aportes_totales,max_aportes_usuario,publico)"+"VALUES (@tema,@calificacion,@idGrupo,@totalAportes,@aportesUsuario,@publico)";

                parametros.Add(tmp01);
                parametros.Add(tmp02);
                parametros.Add(tmp03);
                parametros.Add(tmp04);
                parametros.Add(tmp05);
                parametros.Add(tmp06);
                
                AccesoBD.DBAccess acceso = new DBAccess();

                acceso.ejecutarSQL(cmdText, parametros);
            }
            catch (SqlException e)
            {
                throw e;
            }

        }


    /*
    * Metodo listar los temas registrados en el sistma
    *
    */
        public List<StrTema> listarTemas()
        {
            StrTema tmpTemas = new StrTema();
            List<StrTema> listaTemas = new List<StrTema>();
            try
            {
                String cmdText;
                cmdText = "GenererlistaTemas";
                AccesoBD.DBAccess acceso = new DBAccess();
                SqlDataReader reader = acceso.ejecutarSelect(cmdText, null);


                while (reader.Read())
                {

                    listaTemas.Add(

                    new StrTema(

                    tmpTemas.Tema = reader.GetValue(0).ToString(),

                    tmpTemas.Calificacion = reader.GetValue(1).ToString()

                    ));

                }

                return listaTemas;
            }
            catch (SqlException e)
            {
                throw e;
            }
        }
        /*
         * Listar temas según un grupo
         * Parametros: idGrupo
         */
        public List<StrTema> listarTemasDeGrupo(int idGrupo)
        {
            Parametros tmpParametro;
            List<Parametros> parametros = new List<Parametros>();
            StrTema tmpTemas = new StrTema();
            List<StrTema> listarTemas = new List<StrTema>();
            try
            {

                String cmdText;
                cmdText = "GenererlistaTemas";
                tmpParametro = new Parametros("idGrupo", Convert.ToString(idGrupo));
                parametros.Add(tmpParametro);
                AccesoBD.DBAccess acceso = new DBAccess();
                SqlDataReader reader = acceso.ejecutarStoredProcedureParam(cmdText,parametros);


                while (reader.Read())
                {

                    listarTemas.Add(

                    new StrTema(

                     tmpTemas.Tema = reader.GetValue(0).ToString(),

                     tmpTemas.Calificacion = reader.GetValue(1).ToString()
                    ));

                }

                return listarTemas;
            }
            catch (SqlException e)
            {
                throw e;
            }
        }
    }
}


  
/*
 
 
       public static void  eliminarAporte(String idAporte) {
            Aporte aporte = new Aporte();
            Aporte = buscar(paporte);
            DaoAporte dao = new DaoUsuario();
            dao.eliminarAporte(usuario);
        }
 
       public void eliminarApore(Aporte paporte)
        {

            AccesoBD.DBAccess acceso = new DBAccess();
            List<Parametros> parametros = new List<Parametros>();

            String cmdText1 = "DELETE FROM taporte WHERE idaporte = @id_aporte";
            Parametros tmp02 = new Parametros("cedula", paporte.idAporte);
            parametros.Add(tmp02);
            acceso.ejecutarSQL(cmdText1, parametros);
        }
 
 */